package com.ljx.offer;

import java.util.LinkedList;

/**
 * @author 李捷禧
 * Date: 2023/3/12
 * ClassName: C06
 */

public class C06 {

    public int[] reversePrint(ListNode head) {
        //利用栈的原理，先进后出
        LinkedList<Integer> list = new LinkedList<>();
        //取值
        while(head!=null){
            list.addLast(head.val);
            head = head.next;
        }
        int[] arr = new int[list.size()];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = list.removeLast();
        }
        return arr;
    }


      class ListNode {
      int val;
      ListNode next;
      ListNode(int x) { val = x; }
  }

    /**
     * 递归实现，不需要额外的空间
     */
    class Solution_05 {

        public int[] reversePrint(ListNode head) {
            return find(head, 0);
        }

        /**
         *
         * @param node 节点
         * @param index 当前是第几个节点，到最后决定数组长度
         * @return
         */
        private int[] find(ListNode node, int index) {
            if (node == null)
                return new int[index]; // 根据当前节点的下标，决定返回的数组长度

            // 向下一个节点进行查询
            int[] rs = find(node.next, index + 1);

            // 赋值
            rs[rs.length - index - 1] = node.val;
            return rs;
        }
    }
    public static void main(String[] args) {

    }

}
